package com.yms.selection;

/**
 * @version : 1.0
 * @author: yangmingsong
 * @date: 2022/9/10-09-10-21:22
 * @description: spring5-test  顺序查找和折半查找
 */
public class Test1 {


    /**
     * 一般查找
     * @param data 数据数组，没有顺序
     * @param e 待查找元素
     * @return 返回查找到的数组下标 ，查找不到返回-1；
     */
    public int sxSelect(int[] data,int e){
        int index = -1;
        for (int i=0;i<data.length;i++){
            if(e==data[i]){
                i = index;
                break;
            }
        }
        return index;
    }

    /**
     * 顺序查找
     * @param data 顺序表
     * @param e 待查
     * @return 返回查找到的数组下标 ，查找不到返回-1；
     */
    public int sxSelect2(int[] data,int e){

        for (int i=0;i<data.length;i++){
            if(data[i]<e && (i+1)<=data.length-1 && data[i+1]>e){
                break;
            }else if(e==data[i]){
                return i;
            }
        }
        return -1;
    }


    /**
     * 折半查找 仅仅适用于顺序表
     * @param data 顺序表
     * @param e 待查
     * @return 返回查找到的数组下标 ，查找不到返回-1；
     */
    public int zbSelect(int[] data,int e){
        int low = 0,high = data.length-1,mid;
        while (low<=high){
            mid = (low + high)/2;
            if(data[mid]==e){
                return mid;
            }else if(data[mid] > e){
                high = mid-1;
            }else {
                low = mid +1;
            }
        }
        return -1;
    }
}
